All files / app/pages [...slug].tsx

0% Statements 0/19
0% Branches 0/2
0% Functions 0/6
0% Lines 0/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45                                                                                         
import { appGetLayout } from "components/AppRoute";
import MarkdownPage, {
  MarkdownPageProps,
} from "features/markdown/MarkdownPage";
import { AUTH, GLOBAL } from "i18n/namespaces";
import { GetStaticPaths, GetStaticProps } from "next";
import nextI18nextConfig from "next-i18next.config";
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
import { getAllMarkdownSlugs } from "utils/markdownPages";
 
export async function getMarkdownPageBySlug(
  slug: Array<string>
): Promise<MarkdownPageProps> {
  const md = await import(`markdown/${slug.join("/")}.md`);
  return {
    slug: slug,
    frontmatter: md.attributes,
    content: md.html,
  };
}
 
export const getStaticPaths: GetStaticPaths = () => ({
  paths: getAllMarkdownSlugs().map((slug) => ({ params: { slug } })),
  fallback: false,
});
 
export const getStaticProps: GetStaticProps = async ({ locale, params }) => ({
  props: {
    ...(await serverSideTranslations(
      locale ?? "en",
      [GLOBAL, AUTH],
      nextI18nextConfig
    )),
    page: await getMarkdownPageBySlug(params!.slug as Array<string>),
  },
});
 
export default function Markdown({ page }: { page: MarkdownPageProps }) {
  return <MarkdownPage {...page} />;
}
 
Markdown.getLayout = appGetLayout({
  isPrivate: false,
});